home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / sun / management / ThreadInfoCompositeData.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  8.2 KB  |  285 lines

  1. package sun.management;
  2.  
  3. import java.lang.Thread.State;
  4. import java.lang.management.LockInfo;
  5. import java.lang.management.MonitorInfo;
  6. import java.lang.management.ThreadInfo;
  7. import javax.management.openmbean.CompositeData;
  8. import javax.management.openmbean.CompositeDataSupport;
  9. import javax.management.openmbean.CompositeType;
  10. import javax.management.openmbean.OpenDataException;
  11. import javax.management.openmbean.OpenType;
  12.  
  13. public class ThreadInfoCompositeData extends LazyCompositeData {
  14.    private final ThreadInfo threadInfo;
  15.    private final CompositeData cdata;
  16.    private final boolean currentVersion;
  17.    private static final String THREAD_ID = "threadId";
  18.    private static final String THREAD_NAME = "threadName";
  19.    private static final String THREAD_STATE = "threadState";
  20.    private static final String BLOCKED_TIME = "blockedTime";
  21.    private static final String BLOCKED_COUNT = "blockedCount";
  22.    private static final String WAITED_TIME = "waitedTime";
  23.    private static final String WAITED_COUNT = "waitedCount";
  24.    private static final String LOCK_INFO = "lockInfo";
  25.    private static final String LOCK_NAME = "lockName";
  26.    private static final String LOCK_OWNER_ID = "lockOwnerId";
  27.    private static final String LOCK_OWNER_NAME = "lockOwnerName";
  28.    private static final String STACK_TRACE = "stackTrace";
  29.    private static final String SUSPENDED = "suspended";
  30.    private static final String IN_NATIVE = "inNative";
  31.    private static final String LOCKED_MONITORS = "lockedMonitors";
  32.    private static final String LOCKED_SYNCS = "lockedSynchronizers";
  33.    private static final String[] threadInfoItemNames = new String[]{"threadId", "threadName", "threadState", "blockedTime", "blockedCount", "waitedTime", "waitedCount", "lockInfo", "lockName", "lockOwnerId", "lockOwnerName", "stackTrace", "suspended", "inNative", "lockedMonitors", "lockedSynchronizers"};
  34.    private static final String[] threadInfoV6Attributes = new String[]{"lockInfo", "lockedMonitors", "lockedSynchronizers"};
  35.    private static final CompositeType threadInfoCompositeType;
  36.    private static final CompositeType threadInfoV5CompositeType;
  37.    private static final CompositeType lockInfoCompositeType;
  38.  
  39.    private ThreadInfoCompositeData(ThreadInfo var1) {
  40.       this.threadInfo = var1;
  41.       this.currentVersion = true;
  42.       this.cdata = null;
  43.    }
  44.  
  45.    private ThreadInfoCompositeData(CompositeData var1) {
  46.       this.threadInfo = null;
  47.       this.currentVersion = isCurrentVersion(var1);
  48.       this.cdata = var1;
  49.    }
  50.  
  51.    public ThreadInfo getThreadInfo() {
  52.       return this.threadInfo;
  53.    }
  54.  
  55.    public boolean isCurrentVersion() {
  56.       return this.currentVersion;
  57.    }
  58.  
  59.    public static ThreadInfoCompositeData getInstance(CompositeData var0) {
  60.       validateCompositeData(var0);
  61.       return new ThreadInfoCompositeData(var0);
  62.    }
  63.  
  64.    public static CompositeData toCompositeData(ThreadInfo var0) {
  65.       ThreadInfoCompositeData var1 = new ThreadInfoCompositeData(var0);
  66.       return var1.getCompositeData();
  67.    }
  68.  
  69.    protected CompositeData getCompositeData() {
  70.       StackTraceElement[] var1 = this.threadInfo.getStackTrace();
  71.       CompositeData[] var2 = new CompositeData[var1.length];
  72.  
  73.       for(int var3 = 0; var3 < var1.length; ++var3) {
  74.          StackTraceElement var4 = var1[var3];
  75.          var2[var3] = StackTraceElementCompositeData.toCompositeData(var4);
  76.       }
  77.  
  78.       LockDataConverter var11 = new LockDataConverter(this.threadInfo);
  79.       CompositeData var12 = var11.toLockInfoCompositeData();
  80.       CompositeData[] var5 = var11.toLockedSynchronizersCompositeData();
  81.       MonitorInfo[] var6 = this.threadInfo.getLockedMonitors();
  82.       CompositeData[] var7 = new CompositeData[var6.length];
  83.  
  84.       for(int var8 = 0; var8 < var6.length; ++var8) {
  85.          MonitorInfo var9 = var6[var8];
  86.          var7[var8] = MonitorInfoCompositeData.toCompositeData(var9);
  87.       }
  88.  
  89.       Object[] var13 = new Object[]{new Long(this.threadInfo.getThreadId()), this.threadInfo.getThreadName(), this.threadInfo.getThreadState().name(), new Long(this.threadInfo.getBlockedTime()), new Long(this.threadInfo.getBlockedCount()), new Long(this.threadInfo.getWaitedTime()), new Long(this.threadInfo.getWaitedCount()), var12, this.threadInfo.getLockName(), new Long(this.threadInfo.getLockOwnerId()), this.threadInfo.getLockOwnerName(), var2, new Boolean(this.threadInfo.isSuspended()), new Boolean(this.threadInfo.isInNative()), var7, var5};
  90.  
  91.       try {
  92.          return new CompositeDataSupport(threadInfoCompositeType, threadInfoItemNames, var13);
  93.       } catch (OpenDataException var10) {
  94.          throw Util.newInternalError(var10);
  95.       }
  96.    }
  97.  
  98.    private static boolean isV5Attribute(String var0) {
  99.       for(String var4 : threadInfoV6Attributes) {
  100.          if (var0.equals(var4)) {
  101.             return false;
  102.          }
  103.       }
  104.  
  105.       return true;
  106.    }
  107.  
  108.    public static boolean isCurrentVersion(CompositeData var0) {
  109.       if (var0 == null) {
  110.          throw new NullPointerException("Null CompositeData");
  111.       } else {
  112.          return isTypeMatched(threadInfoCompositeType, var0.getCompositeType());
  113.       }
  114.    }
  115.  
  116.    public long threadId() {
  117.       return getLong(this.cdata, "threadId");
  118.    }
  119.  
  120.    public String threadName() {
  121.       String var1 = getString(this.cdata, "threadName");
  122.       if (var1 == null) {
  123.          throw new IllegalArgumentException("Invalid composite data: Attribute threadName has null value");
  124.       } else {
  125.          return var1;
  126.       }
  127.    }
  128.  
  129.    public Thread.State threadState() {
  130.       return State.valueOf(getString(this.cdata, "threadState"));
  131.    }
  132.  
  133.    public long blockedTime() {
  134.       return getLong(this.cdata, "blockedTime");
  135.    }
  136.  
  137.    public long blockedCount() {
  138.       return getLong(this.cdata, "blockedCount");
  139.    }
  140.  
  141.    public long waitedTime() {
  142.       return getLong(this.cdata, "waitedTime");
  143.    }
  144.  
  145.    public long waitedCount() {
  146.       return getLong(this.cdata, "waitedCount");
  147.    }
  148.  
  149.    public String lockName() {
  150.       return getString(this.cdata, "lockName");
  151.    }
  152.  
  153.    public long lockOwnerId() {
  154.       return getLong(this.cdata, "lockOwnerId");
  155.    }
  156.  
  157.    public String lockOwnerName() {
  158.       return getString(this.cdata, "lockOwnerName");
  159.    }
  160.  
  161.    public boolean suspended() {
  162.       return getBoolean(this.cdata, "suspended");
  163.    }
  164.  
  165.    public boolean inNative() {
  166.       return getBoolean(this.cdata, "inNative");
  167.    }
  168.  
  169.    public StackTraceElement[] stackTrace() {
  170.       CompositeData[] var1 = (CompositeData[])this.cdata.get("stackTrace");
  171.       StackTraceElement[] var2 = new StackTraceElement[var1.length];
  172.  
  173.       for(int var3 = 0; var3 < var1.length; ++var3) {
  174.          CompositeData var4 = var1[var3];
  175.          var2[var3] = StackTraceElementCompositeData.from(var4);
  176.       }
  177.  
  178.       return var2;
  179.    }
  180.  
  181.    public LockInfo lockInfo() {
  182.       LockDataConverter var1 = new LockDataConverter();
  183.       CompositeData var2 = (CompositeData)this.cdata.get("lockInfo");
  184.       return var1.toLockInfo(var2);
  185.    }
  186.  
  187.    public MonitorInfo[] lockedMonitors() {
  188.       CompositeData[] var1 = (CompositeData[])this.cdata.get("lockedMonitors");
  189.       MonitorInfo[] var2 = new MonitorInfo[var1.length];
  190.  
  191.       for(int var3 = 0; var3 < var1.length; ++var3) {
  192.          CompositeData var4 = var1[var3];
  193.          var2[var3] = MonitorInfo.from(var4);
  194.       }
  195.  
  196.       return var2;
  197.    }
  198.  
  199.    public LockInfo[] lockedSynchronizers() {
  200.       LockDataConverter var1 = new LockDataConverter();
  201.       CompositeData[] var2 = (CompositeData[])this.cdata.get("lockedSynchronizers");
  202.       return var1.toLockedSynchronizers(var2);
  203.    }
  204.  
  205.    public static void validateCompositeData(CompositeData var0) {
  206.       if (var0 == null) {
  207.          throw new NullPointerException("Null CompositeData");
  208.       } else {
  209.          CompositeType var1 = var0.getCompositeType();
  210.          boolean var2 = true;
  211.          if (!isTypeMatched(threadInfoCompositeType, var1)) {
  212.             var2 = false;
  213.             if (!isTypeMatched(threadInfoV5CompositeType, var1)) {
  214.                throw new IllegalArgumentException("Unexpected composite type for ThreadInfo");
  215.             }
  216.          }
  217.  
  218.          CompositeData[] var3 = (CompositeData[])var0.get("stackTrace");
  219.          if (var3 == null) {
  220.             throw new IllegalArgumentException("StackTraceElement[] is missing");
  221.          } else {
  222.             if (var3.length > 0) {
  223.                StackTraceElementCompositeData.validateCompositeData(var3[0]);
  224.             }
  225.  
  226.             if (var2) {
  227.                CompositeData var4 = (CompositeData)var0.get("lockInfo");
  228.                if (var4 != null && !isTypeMatched(lockInfoCompositeType, var4.getCompositeType())) {
  229.                   throw new IllegalArgumentException("Unexpected composite type for \"lockInfo\" attribute.");
  230.                }
  231.  
  232.                CompositeData[] var5 = (CompositeData[])var0.get("lockedMonitors");
  233.                if (var5 == null) {
  234.                   throw new IllegalArgumentException("MonitorInfo[] is null");
  235.                }
  236.  
  237.                if (var5.length > 0) {
  238.                   MonitorInfoCompositeData.validateCompositeData(var5[0]);
  239.                }
  240.  
  241.                CompositeData[] var6 = (CompositeData[])var0.get("lockedSynchronizers");
  242.                if (var6 == null) {
  243.                   throw new IllegalArgumentException("LockInfo[] is null");
  244.                }
  245.  
  246.                if (var6.length > 0 && !isTypeMatched(lockInfoCompositeType, var6[0].getCompositeType())) {
  247.                   throw new IllegalArgumentException("Unexpected composite type for \"lockedSynchronizers\" attribute.");
  248.                }
  249.             }
  250.  
  251.          }
  252.       }
  253.    }
  254.  
  255.    static {
  256.       try {
  257.          threadInfoCompositeType = (CompositeType)MappedMXBeanType.toOpenType(ThreadInfo.class);
  258.          String[] var0 = (String[])threadInfoCompositeType.keySet().toArray(new String[0]);
  259.          int var1 = threadInfoItemNames.length - threadInfoV6Attributes.length;
  260.          String[] var2 = new String[var1];
  261.          String[] var3 = new String[var1];
  262.          OpenType[] var4 = new OpenType[var1];
  263.          int var5 = 0;
  264.  
  265.          for(String var9 : var0) {
  266.             if (isV5Attribute(var9)) {
  267.                var2[var5] = var9;
  268.                var3[var5] = threadInfoCompositeType.getDescription(var9);
  269.                var4[var5] = threadInfoCompositeType.getType(var9);
  270.                ++var5;
  271.             }
  272.          }
  273.  
  274.          threadInfoV5CompositeType = new CompositeType("java.lang.management.ThreadInfo", "J2SE 5.0 java.lang.management.ThreadInfo", var2, var3, var4);
  275.       } catch (OpenDataException var10) {
  276.          throw Util.newInternalError(var10);
  277.       }
  278.  
  279.       Object var11 = new Object();
  280.       LockInfo var12 = new LockInfo(var11.getClass().getName(), System.identityHashCode(var11));
  281.       CompositeData var13 = LockDataConverter.toLockInfoCompositeData(var12);
  282.       lockInfoCompositeType = var13.getCompositeType();
  283.    }
  284. }
  285.